package com.briup.day14;

public class Test05_Interface {
    public static void main(String[] args) {
        System.out.println(IAction.NUM1);
        System.out.println(IAction.NUM2);
        //IAction.NUM2 = 30;  ERROR

        //多态：在接口和实现类 关系中 继续生效
        IAction ac = new ActionImpl();
        ac.start();
        ac.end();

        System.out.println("-------------");
        // ac.work(); ERROR
        if(ac instanceof IDo) {
            IDo id = (IDo) ac;
            id.work();
        }
    }
}

//定义实现类: 同时实现多个接口
class ActionImpl implements IAction,IDo {

    //重写 接口中的所有 抽象方法
    @Override
    public void start() {
        System.out.println("start开始执行 ");
    }

    @Override
    public void end() {
        System.out.println("执行即将结束，end ...");
    }

    @Override
    public void work() {
        System.out.println("do work 方法开始执行 ...");
    }
}

//定义接口
interface IAction {
    //添加成员【默认 public static final】
    public static final int NUM1 = 10;
    int NUM2 = 20;

    //添加方法【默认 public abstract】
    public abstract void start();
    void end();
}

interface IDo {
    void work();
}